package com.haixiaoke.saas.repository.mapper;

import com.haixiaoke.saas.repository.pojo.OrderAmountItem;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 商品的计算数值和商品的类型Mapper接口
 * 
 * @author haixiaoke
 * @date 2023-04-17
 */
@Mapper
public interface OrderAmountItemMapper {
    /**
     * 查询商品的计算数值和商品的类型
     * 
     * @param amountItemId 商品的计算数值和商品的类型主键
     * @return 商品的计算数值和商品的类型
     */
    OrderAmountItem selectOrderAmountItemByAmountItemId(Long amountItemId);

    /**
     * 查询商品的计算数值和商品的类型列表
     * 
     * @param orderAmountItem 商品的计算数值和商品的类型
     * @return 商品的计算数值和商品的类型集合
     */
    List<OrderAmountItem> selectOrderAmountItemList(OrderAmountItem orderAmountItem);

    /**
     * 新增商品的计算数值和商品的类型
     * 
     * @param orderAmountItem 商品的计算数值和商品的类型
     * @return 结果
     */
    int insertOrderAmountItem(OrderAmountItem orderAmountItem);

    /**
     * 修改商品的计算数值和商品的类型
     * 
     * @param orderAmountItem 商品的计算数值和商品的类型
     * @return 结果
     */
    int updateOrderAmountItem(OrderAmountItem orderAmountItem);

    /**
     * 删除商品的计算数值和商品的类型
     * 
     * @param amountItemId 商品的计算数值和商品的类型主键
     * @return 结果
     */
    int deleteOrderAmountItemByAmountItemId(Long amountItemId);

    /**
     * 批量删除商品的计算数值和商品的类型
     * 
     * @param amountItemIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteOrderAmountItemByAmountItemIds(Long[] amountItemIds);

    int insertBatchOrderAmountItem(List<OrderAmountItem> items);

    /**
     * 根据订单id获取OrderAmountItem集合
     * @param orderId
     * @return
     */
    List<OrderAmountItem> selectOrderAmountItemByOrderId(String orderId);

    Double selectDepositByOrderId(String orderId);

    void deleteOrderAmountItemByOrderId(String orderId);

    int updateOrderAmountItemByOrderId(OrderAmountItem item);

    OrderAmountItem selectOrderAmountItemByOrderIdAndGoodsType(@Param("orderId") String orderId,@Param("goodsType") Integer goodsType);
}
